iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
SideProject30

python基礎及數據科學之應用系列 第 13

python基礎及數據科學之應用day 13[寶可夢大師pvp資料(csv)讀取]

  • 分享至 

  • xImage
  •  

大家好,今天是13日。今天要介紹是csv,也有應用部分(pokemon go pvp資料)。

什麼是 csv

逗號分隔值(Comma-Separated Values)每一行代表一行數據,每行中的值以逗號分隔(因此得名)。

csv有什麼用

CSV 檔案廣泛用於不同應用程式和系統之間交換資料。它們提供了一種普遍接受的格式來共享結構化數據,可以透過不同的軟體程式輕鬆匯入和匯出這些數據。許多應用程式(包括電子表格軟體、資料庫和程式語言)都支援 CSV 檔案匯入和匯出。

AI模型通常需要大量的訓練數據,CSV檔案可以作為儲存和預處理資料的通用格式。這包括刪除不相關資訊、處理缺失值、標準化資料和編碼分類變數等任務。資料經過預處理後,可用於訓練和評估人工智慧模型。

模型評估與分析:CSV 檔案可用於儲存 AI 模型效能的評估指標和結果。訓練和測試 AI 模型後,可以將準確度、精確度、召回率或 F1 分數等效能指標記錄在 CSV 檔案中。

csv模組不需要安裝,因為它已經在python套件中

/images/emoticon/emoticon12.gif

下面是一個 CSV 檔案範例:

Name, Age, City
John Doe, 25, New York
Jane Smith, 30, London
Mark Johnson, 40, Paris

CSV與python一起工作:

這個項目需要知道什麼是with oepn,如果你不知道可以參考我在day8的文章

將資料寫入csv例子:
(mode w)


import csv

# csv data
data = [
    ['Name', 'Age', 'City'],
    ['carson Leung', 14, 'Hong Kong'],
    ['Jane Smith', 65, 'London'],
    ['Mark Johnson', 100, 'Paris']
]

#開啟 CSV 檔案進行寫入
with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)    
    #將行寫入 CSV 文件
    writer.writerows(data)

print("CSV file written successfully.")

執行結果:

CSV file written successfully.

output.csv:

Name,Age,City
carson Leung,14,Hong Kong
Jane Smith,65,London
Mark Johnson,100,Paris

讀取 csv:

import csv

data=[]
with open('output.csv', 'r') as file:
    reader = csv.reader(file)
  #for循環列印csv項目
    for row in reader:
      data.append(row)
      
print(data)

執行結果:

>>[['Name', 'Age', 'City'], ['carson Leung', '14', 'Hong Kong'], ['Jane Smith', '65', 'London'], ['Mark Johnson', '100', 'Paris']]

應用:

pokemon大師必須知道pokemon的pvp能力,所以我從 https://pvpoketw.com/rankings/all/10000/statproduct/ 獲取pokemon go pvp數據並嘗試列印該值

data(top 10 pokemon):

名稱,評分,圖鑑編號,第一屬性,第二屬性,攻擊力,防禦力,HP,Stat Product,等級,一般招式,特殊招式1,特殊招式2,幾下可用特招1,幾下可用特招2,夥伴行走距離,開第二招星塵花費
基格爾德 完全體,98.4,718,龍,地面,167.2,186.5,339,10574857,50,龍尾,咬碎,地震,5,8,20,100000
固拉多,94.7,383,地面,,239.5,204.2,184,8997828,50,泥巴射擊,斷崖之劍,火焰拳,7,5,20,100000
騎拉帝納 別種,94.6,487,幽靈,龍,169.7,201.7,251,8592214,50,暗影爪,龍爪,原始之力,5,6,20,100000
快龍 暗影,94.5,149,龍,飛行,233.6,179,188,7860515,50,龍息,龍爪,蠻力,12,14,5,75000
快龍,93.9,149,龍,飛行,233.6,179,188,7860515,50,龍息,龍爪,蠻力,12,14,5,75000
哲爾尼亞斯,93,716,妖精,,222.7,168.1,219,8195751,50,大地掌控,近身戰,月亮之力,4,5,20,100000
超夢 暗影,92.5,150,超能力,,264.7,165.5,192,8412920,50,精神利刃,精神擊破,暗影球,5,7,20,100000
酋雷姆,92.3,646,龍,冰,219.3,155.5,218,7432544,50,龍息,冰封世界,龍爪,14,12,20,100000
美洛耶塔 歌聲,92.2,648,一般,超能力,222.7,201.7,201,9026553,50,電光一閃,精神衝擊,魔法閃耀,6,9,20,100000
烈空坐,91.8,384,龍,飛行,251.2,155.5,191,7460107,50,龍尾,廣域破壞,畫龍點睛,4,8,20,100000

應用範例:

import csv

data=[]
with open('pokemon.csv', 'r') as file:
    reader = csv.reader(file)
  #for循環列印csv項目
    for row in reader:
      data.append(row)

def name():
  for i in range(9):
    print(data[i+1][0])

print(data[0][0]+":")
name()

執行結果:

名稱:
基格爾德 完全體
固拉多
騎拉帝納 別種
快龍 暗影
快龍
哲爾尼亞斯
超夢 暗影
酋雷姆
美洛耶塔 歌聲

小練習:

在终端機輸出top 10的一般招式及特殊招式1。

/images/emoticon/emoticon14.gif

答案

import csv

data=[]
with open('pokemon.csv', 'r') as file:
    reader = csv.reader(file)
  #for循環列印csv項目
    for row in reader:
      data.append(row)

def name_and_attack(n):
  return(data[n+1][0]+", 一般招式是: " + data[n+1][10] + ", 特殊招式1:"+ data[n+1][11])

#print out
for i in range(10):
  print(name_and_attack(i))

執行結果:

基格爾德 完全體, 一般招式是: 龍尾, 特殊招式1:咬碎
固拉多, 一般招式是: 泥巴射擊, 特殊招式1:斷崖之劍
騎拉帝納 別種, 一般招式是: 暗影爪, 特殊招式1:龍爪
快龍 暗影, 一般招式是: 龍息, 特殊招式1:龍爪
快龍, 一般招式是: 龍息, 特殊招式1:龍爪
哲爾尼亞斯, 一般招式是: 大地掌控, 特殊招式1:近身戰
超夢 暗影, 一般招式是: 精神利刃, 特殊招式1:精神擊破
酋雷姆, 一般招式是: 龍息, 特殊招式1:冰封世界
美洛耶塔 歌聲, 一般招式是: 電光一閃, 特殊招式1:精神衝擊
烈空坐, 一般招式是: 龍尾, 特殊招式1:廣域破壞

將 csv 轉換為 json

import csv
import json

def convert_csv_to_json(csv_file, json_file):
    # Read CSV file and parse rows
    with open(csv_file, 'r') as file:
        csv_reader = csv.DictReader(file)
        data = list(csv_reader)

    # 寫入 JSON 文件
    with open(json_file, 'w') as file:
        json.dump(data, file, indent=4)

# Example usage
csv_file = 'pokemon.csv'  # 替換為您的 CSV 檔案路徑
json_file = 'data.json'  # 替換為所需的輸出 JSON 檔案路徑

convert_csv_to_json(csv_file, json_file)
print("done")

執行結果:

>>done

現在我們可以看到一個新檔案呼叫 data.json

以json方式讀取數據

import json

with open ("data.json",mode="r") as f:
  data = json.load(f)
  
for i in data:
  print(i["名稱"])

執行結果:

基格爾德 完全體
固拉多
騎拉帝納 別種
快龍 暗影
快龍
哲爾尼亞斯
超夢 暗影
酋雷姆
美洛耶塔 歌聲
烈空坐

如果我的文章對你有幫助或有更好的建議,可以追蹤我,可以按讚和不妨在留言區提出,明天再見吧。bye

reference:
https://pvpoketw.com/rankings/all/10000/statproduct/


上一篇
python基礎及數據科學之應用day 12[numpy array起簡單介紹 ]
下一篇
python基礎及數據科學之應用day 14[Statistics模組]
系列文
python基礎及數據科學之應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言